[ <--- prev -- ]  [ HOME ]  [ -- next ---> ]

[ full index ]


12 Generating and propagating optical photons

FLUKA can be used to generate and propagate optical photons of Cherenkov, scintillation and transition radiation light. Light generation is switched off by default and is activated and totally controlled by the user by means of data cards and user routines. This is true also for the optical properties of materials. These include the refraction index as a function of wave-length (or frequency or energy), the reflection coefficient of a given material, etc.

In this respect, the user has the responsibility of issuing the right input directives: the code does not perform any physics check on the assumptions about the light yield and the properties of material.

Optical photons (FLUKA id = -1) are treated according the laws of geometrical optics and therefore can be reflected and refracted at boundaries between different materials. From the physics point of view, optical photons have a certain energy (sampled according to the generation parameters given by the user) and carry along their polarisation information. Cherenkov photons are produced with their expected polarisation, while scintillation photons are assumed to be unpolarised. At each reflection or refraction, polarisation is assigned or modified according to optics laws derived from Maxwell equations.

At a boundary between two materials with different refraction index, an optical photon is propagated (refracted) or reflected with a relative probability calculated according to the laws of optics.

Furthermore, optical photons can be absorbed in flight (if the user defines a non zero absorption coefficient for the material under consideration) or elastically scattered (Rayleigh scattering) if the user defines a non zero diffusion coefficient for the material under consideration).

In order to deal with optical photon problems, two specific input cards are available to the user:

  OPT-PROP: to set optical properties of materials.
  OPT-PROD: to manage light generation.

See the corresponding detailed description of these options and of their parameters in Chapter (7).

Some user routines are also available for a more complete representation of the physical problem:

   RFRNDX: to specify a refraction index as a function of wavelength,
           frequency or energy
   RFLCTV: to specify the reflectivity of a material.
           This can be activated by card OPT-PROP with SDUM = METAL and
           WHAT(3) < -99.
   OPHBDX: to set optical properties of a boundary surface. The call
           is activated by card OPT-PROP with SDUM = SPEC-BDX.
   FRGHNS: to set a possible degree of surface roughness, in order to have
           both diffusive and specular reflectivity from a given material
           surface.
   QUEFFC: to request a detailed quantum efficiency treatment. This is
           activated by card OPT-PROP with SDUM = SENSITIV, setting the
           0-th optical photon sentitivity parameter to a value lesser
           than -99 (WHAT(1) < -99).

All running values of optical photon tracking are contained in the TRACKR common block, just as for the other ordinary elementary particles.

12.1 Cherenkov transport and quantum efficiency

In order to use quantum efficiency (using the QUEFFC routine) the user must input a sensitivity < -100 using the OPT-PROP option with SDUM = SENSITIV).

That option sets the quantum efficiency as a function of photon energy OVERALL through the problem and it is not material/region dependent. The reason is that it is applied ä priori" at photon generation time (for obvious time saving reasons). Here below is an explanation taken directly from the code.

Summarising, the yes/no detection check is done AT PRODUCTION and NOT AT DETECTION: this in order to substantially cut down CPU time. If one wants all photons to be produced the sensitivity must be set = 1. Then it is still possibile to apply a quantum efficiency curve AT DETECTION, by means of the user weighting routine FLUSCW (see (13)) or by a user-written off-line code.

Since the quantum efficiency curve provided by OPT-PROD with SDUM = SENSITIV is applied at production and not at detection, it is not known which material the photon will eventually end up in.

Furthermore, WHAT(5) must be set anyway equal to the maximum quantum efficiency over the photon energy range under consideration. One cannot use the QUEFFC routine as a way to provide an initial screening on the produced photons, i.e. to use a "safe" initial guess for the quantum efficiency (say, for instance 20%) and then, at detection, to refine it through more sophisticated curves, i.e. rejecting against the actual quantum efficiency/0.2 (this again can be done in routine FLUSCW). This makes sense of course if the user has different quantum efficiency curves for different detectors (one should use in QUEFFC the curve that maximises all of them and then refine it by rejection case by case), or if the quantum efficiency is position/angle dependent upon arrival on the photomultiplier (again one should use inside QUEFFC the quantum efficiency for the most efficient position/angle and refine by rejection at detection time.

Optical photons are absorbed in those material where the user selected properties dictate absorption, i.e. metals or materials with a non zero absorption cross section. These absorption events can be detected in different ways. For instance:

12.2 Handling optical photons

In order to help the user to understand how to deal with optical photons, in the following we describe two input files respectively concerning the production in Liquid Argon of Cherenkov (section 12.2.3}) and Scintillation light (section 12.2.4}). A specific user routine, giving the refraction index of Liquid Argon as a function of wave-length is also shown (section 12.2.2}).

It is a very simple case, in which muons are generated inside a box filled with Liquid Argon. Notice that at present it is not yet possible to request optical photons as primary particles via the BEAM card. Therefore light must be generated starting from ordinary particles, or by a special user-written SOURCE routine, where optical photons are loaded into their dedicated stack (OPPHST) instead of that of ordinary particles (FLKSTK). An example of such SOURCE is shown in 1.2.1}.

The examples presented here consider 0.5 GeV muons in a box of 4 x 4 x 4 m^3. In order to avoid unnecessary complications in the example, secondary particle production by muons is switched off. Of course this is not required in real problems.

As far as the output is concerned, the following example proposes a standard energy spectrum scoring at a boundary (option USRBDX) applied to optical photons, together with a user-specific output built via the MGDRAW user routine (see Chap. (13)), where a dump of optical photon tracking is inserted. At the end of this section (in section 12.2.5}) we shall propose the relevant code lines to be inserted in MGDRAW (activated by the USERDUMP card), together with an example of readout (section 12.2.6}).


12.2.1 Example of SOURCE routine for optical photons

OURCE routine for optical photons|Example of SOURCE routine for optical photons|98|12| -->

 *$ CREATE SOURCE.FOR
 *COPY SOURCE
 *
 *=== source ===========================================================*
 *
       SUBROUTINE SOURCE ( NOMORE )

       INCLUDE '(DBLPRC)'
       INCLUDE '(DIMPAR)'
       INCLUDE '(IOUNIT)'
 *
 *